// 知识点1：实际上派生类可能多次继承自一个相同的类（两个直接基类继承自一个相同的间接基类），造成的结果是派生类含有该基类的多个子对象
// 知识点2：虚继承的目的是令某个类做出声明，承诺愿意共享它的基类，共享的基类子对象称为及虚基类，在此情况下，无论虚基类在集成体系中出现多少次，派生类中都只包含唯一一个共享的虚基类对象

// 知识点3：具体做法是在继承说明中加上virtual，可以与集成说明符互换

// 知识点4：成员被基类多覆盖的情况需要分类讨论

// 需要加限定符：foo()，cval

// 不需要加限定符：bar()，ival